package w83b.w83bManager;

import java.util.HashMap;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import w83b.w83bBeans.W83bConveniosBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bDAO.W83bFactoriaDAO;
import w83b.w83bDAO.w83bConstantesBD.W83bConveniosBD;


public class W83bConvenios implements W83bIConvenios {
		
	public java.util.List buscarConvenios(w83b.w83bBeans.W83bConveniosBean param) throws Exception{
		
		
		List listaAgrupaciones = W83bFactoriaDAO.getMantenimientosDAO().buscarConvenios(param);
		
		return listaAgrupaciones;	
	}

	public String anyadirConvenios(W83bConveniosBean param)
			throws Exception {

		String resultado = "0";
		
		if(StringUtils.isEmpty(param.getCodConvenios())){
			String maxConvenio = W83bFactoriaDAO.getMantenimientosDAO().maxCodConvenios();		
			if(W83bConveniosBD.maxCodigo.equals(maxConvenio)){
				boolean codEncontrado = false;
				if(Integer.parseInt(maxConvenio)+1
						!=Integer.parseInt(W83bFactoriaDAO.getMantenimientosDAO().contarConvenios())){
					while(!codEncontrado){
						maxConvenio = String.valueOf(Integer.parseInt(maxConvenio)-1);//NOPMD
						codEncontrado = !W83bFactoriaDAO.getMantenimientosDAO().existeConvenio(maxConvenio);
					}
					param.setCodConvenios(maxConvenio);
					resultado = param.getCodConvenios();
					W83bFactoriaDAO.getMantenimientosDAO().anyadirConvenios(param);		
				}else{
					resultado = "-1";
				}
			}else{				
				maxConvenio = String.valueOf(Integer.parseInt(maxConvenio)+1);//NOPMD
				resultado = maxConvenio;
				param.setCodConvenios(maxConvenio);				
				W83bFactoriaDAO.getMantenimientosDAO().anyadirConvenios(param);		
			}
		}else {
			if(!W83bFactoriaDAO.getMantenimientosDAO().existeConvenio(param.getCodConvenios())){	
				W83bFactoriaDAO.getMantenimientosDAO().anyadirConvenios(param);		
			}else{
				resultado = "-2";				
			}
		}		
		
		return resultado;
	}
	
	public String modificarConvenios(W83bConveniosBean param)
	throws Exception {
		
		String resultado =  W83bFactoriaDAO.getMantenimientosDAO().modificarConvenios(param);		
		
		return resultado;
	}
	
	public w83b.w83bBeans.W83bConveniosBean detalleConvenios(w83b.w83bBeans.W83bConveniosBean param) throws  java.lang.Exception, java.rmi.RemoteException {

		
		w83b.w83bBeans.W83bConveniosBean convenio = W83bFactoriaDAO.getMantenimientosDAO().detalleConvenios(param);
		
		return convenio;
	}
	
	
	
	public java.lang.String borrarConvenios(java.util.ArrayList param) 
	throws Exception {
		boolean resultado = false;
		String resultadoTotal = "false";
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		for(int i=0,size=param.size();i<size;i++){
			resultado = false;
			resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioActas((String)param.get(i));
			if(resultado){
				resultadoTotal = "true";
			}else{
				resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioPreavisos((String)param.get(i));
				if(resultado){
					resultadoTotal = "true";
				}else{
					resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioPreavisos53((String)param.get(i));
					if(resultado){
						resultadoTotal = "true";
					}else{
						resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioAgrupacion2((String)param.get(i));
						if(resultado){
							resultadoTotal = "true";
						}
					}
				}
			}
			if(!resultado){
				W83bFactoriaDAO.getMantenimientosDAO().borrarConveniosIndividual((String)param.get(i),userBean);
			}
		}
		return resultadoTotal;
	}
	
	public java.lang.String comprobarAsociacionTablas(java.util.ArrayList param) 
	throws Exception {
		
		boolean resultado = false;
		
		for(int i=1,size=param.size();i<size;i++){
			resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioActas((String)param.get(i));
			if(resultado){
				break;
			}
			resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioPreavisos((String)param.get(i));
			if(resultado){
				break;
			}
			resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioPreavisos53((String)param.get(i));
			if(resultado){
				break;
			}
		}
		
		return resultado?"true":"false";
	}
	

	public java.lang.String comprobarAsociacionConveniosAgrupaciones(java.util.ArrayList param) 
	throws Exception {
		
		boolean resultado = false;
		String resultadoTotal = "false";
		for(int i=1,size=param.size();i<size;i++){
			resultado = false;
			resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioActas((String)param.get(i));
			if(resultado){
				resultadoTotal = "true";
			}else{
				resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioPreavisos((String)param.get(i));
				if(resultado){
					resultadoTotal = "true";
				}else{
					resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioPreavisos53((String)param.get(i));
					if(resultado){
						resultadoTotal = "true";
					}else{
						resultado =  W83bFactoriaDAO.getMantenimientosDAO().existeConvenioAgrupacion2((String)param.get(i));
						if(resultado){
							resultadoTotal = "true";
						}
					}
				}
			}
		}
		return resultadoTotal;
	}
	
	public java.lang.String asociarConvenios(java.util.ArrayList param) 
	throws Exception {
		String resultado = "0";
		
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		
		for(int i=0,size=param.size();i<size;i++){
			HashMap mapa = (HashMap)param.get(i);
			if(!W83bFactoriaDAO.getMantenimientosDAO().existeConvenioAgrupacion((String)mapa.get("codConvenio"),(String)mapa.get("codAgrupacion"))){
				W83bFactoriaDAO.getMantenimientosDAO().asociarConvenios((String)mapa.get("codConvenio"),(String)mapa.get("codAgrupacion"),userBean);			
			}else{
				resultado = "-1";
			}
		}
		
		return resultado;
	}
}